package com.jy.adscm.hcPlan.service;

import com.jy.adscm.exception.AdscmSystemException;
import com.jy.adscm.hcPlan.bean.HcPlanMakePartExample;
import com.baomidou.mybatisplus.service.IService;
import com.jy.adscm.hcPlan.bean.support.HcPlanMakePartMergeSupport;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 单批次耗材零件制造配置 服务类
 * </p>
 *
 * @author yyy
 * @since 2018-08-15
 */
public interface HcPlanMakePartExampleService extends IService<HcPlanMakePartExample> {
    /**
     * 以零件的制造机器为key，获取所有需要由这个机器制造的零件的相关信息
     * @return
     */
    public Map<String,List<HcPlanMakePartExample>> getHcPartExamples(String date) throws AdscmSystemException;

    /**
     * 修改零件的制作机器<br><br/>
     * @param example
     * @throws AdscmSystemException
     */
    public void editAllHcPartExamples(HcPlanMakePartExample example) throws AdscmSystemException;

    /**
     * 制造并单
     * @param start_date
     * @param end_date
     * @param macCode
     * @param operator
     * @param ids
     * @return
     * @throws AdscmSystemException
     */
    public String mergePart(String start_date,String end_date,String  macCode,String operator,List<Long> ids,String isUpdate) throws AdscmSystemException;


    /**
     * 装配单批次零件制造的数据
     * @param assemblyId
     * @throws AdscmSystemException
     */
//    public void loadHcPartExampleByAssemblyId(Long assemblyId) throws AdscmSystemException;

    /**
     * 装配单批次零件制造的数据
     * @param assemblyId
     * @throws AdscmSystemException
     */
    public void loadHcPartExampleByAssemblyId_new1(Long assemblyId) throws AdscmSystemException;

    /**
     * 获取所有正在进行中的零件制造记录
     * @return
     * @throws AdscmSystemException
     */
    public List<Map<String,Object>> getAllMakePartExample() throws AdscmSystemException;

    /**
     * 获取所有生产二部的员工
     * @return
     * @throws AdscmSystemException
     */
    public List<Map<String,Object>> getAllMakeUser() throws AdscmSystemException;
    /**
     * 根据并单号，获取并单详情
     * @return
     * @throws AdscmSystemException
     */
    public HcPlanMakePartMergeSupport getMergePartDetail(String mergeId) throws AdscmSystemException;

    /**
     * 下发零件制造任务
     * @param merge_id
     */
    void submitMakePartTask(String merge_id)throws AdscmSystemException;

    /**
     * 程序自动计算，选择的一批待并单的零件的 生产时间
     * @param ids
     * @return
     * @throws AdscmSystemException
     */
    Map<String,Object> calculateMakePartTime(Long[] ids) throws AdscmSystemException;
    /**
     * 程序自动计算，选择的一批待并单的零件的 生产时间
     * 以当下时间为准，如果没有查询到已有的最后时间，则按照当前系统时间的明天计算，如果查询到了，则依照已有的最后时间的明天计算
     * @param ids
     * @return
     * @throws AdscmSystemException
     */
    Map<String,Object> calculateMakePartTime_1(Long[] ids) throws AdscmSystemException;
}
